今天介紹一下以 golang 為主編程語言,建立當前最知名的容器管理服務 — Kubernetes。我們在上一篇已經簡單的敘述過,服務是如何演進成分散式服務,而微服務又是如何因應分散式服務而產生,今天的我們會介紹 Kubernetes 的運作架構,以及關於 Kubernetes 幾個關鍵名詞解釋,Here we go。
When you deploy Kubernetes, you get a cluster.
當我們實作出 Kubernetes 的部署時,我們其實是實體化了一個 cluster 環境,上面利用網路將 Kubernetes Master Node 與 Worker Nodes 連結起來。Master Node 管理數個 Worker Nodes,Worker Node 管理數個 Pods,故稱之為 cluster。
控制總管,亦稱之為 Master,負責管理 health check 與資源調度等總體控管。從官方架構圖可以看出,涵蓋了 API Server、controller-manager、scheduler、etcd 功能。Control Plane 隨然可以架在叢集的任一節點上,但實務上為了方便管理通常會固定在同一台機器上,並且該機器是不會去運行其他服務容器的。
簡單介紹一下 Control Plane 幾個組件的主要功能
工作節點,上面運行了許多 Pods,是 kubernetes 的最小工作單位。Node 會依據 Control Plane 的調度來配置 Node 上的資源,包含了 Pods 的數量增減與,services 網路規則變更等等。組件涵蓋 kubelet、kube-proxy、container engine 等。
簡單介紹一下 Node 幾個組件的主要功能